package com.nd.android.musicboxlibrary.util;

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.WifiManager;

/**
 * 
 * <br>
 * Created 2014年9月11日 下午11:17:40
 * 
 * @version
 * @author wat.ztag
 * 
 * @see
 */
public final class Network {

    /**
     * Creates a new instance of Network. <br>
     * Created 2014年9月11日 下午11:17:44
     */
    private Network() {
    }

    private static final String TAG = "Network";

    /**
     * 
     * <br>
     * Created 2014年9月11日 下午11:18:13
     * 
     * @param context Context
     * @return String
     * @author wat.ztag
     */
    public static String getActiveNetWorkName(Context context) {
        ConnectivityManager connectivity = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        String result = null;
        do {
            if (connectivity == null) {
                break;
            }

            NetworkInfo[] info = connectivity.getAllNetworkInfo();
            if (info != null) {
                for (int i = 0; i < info.length; i++) {

                    if (info[i].getState() == NetworkInfo.State.CONNECTED) {
                        result = info[i].getTypeName();
                    }
                }
            }
        } while (false);
        return result;
    }

    /**
     * network tools
     *  @param context Context
     * @return boolean
     */
    public static boolean isWifiEnable(Context context) {
        WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);

        return wifiManager.isWifiEnabled();
    }

    /**
     * 
     * <br>
     * Created 2014年9月11日 下午11:18:18
     * 
     * @param context Context
     * @return boolean
     * @author wat.ztag
     */
    public static boolean isNetworkAvaliable(Context context) {
        return isNetworkAvaliable(context, false);
    }

    /**
     * 
     * <br>
     * Created 2014年9月11日 下午11:18:27
     * 
     * @param context Context
     * @param show boolean
     * @return boolean
     * @author wat.ztag
     */
    public static boolean isNetworkAvaliable(Context context, boolean show) {
        boolean result = false;
        String net = getActiveNetWorkName(context);
        if (net != null) {
            // Log.i(TAG, "network is ok: " + net);
            result = true;
        } else {
            Log.w(TAG, "there is no network connection");
            if (show) {
                ToastUtil.showShort(context, "未找到可用的网络链接。");
            }
            result = false;
        }
        return result;
    }

}
